home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 6 / The Arsenal Files 6 (Arsenal Computer).ISO / prg_casm / jlvesa11.zip / JLVESC00.CPP < prev    next >
Text File  |  1995-11-14  |  1KB  |  88 lines

  1. // This file is part of JLVesa-library
  2.  
  3. #include "jlvesa.h"
  4.  
  5. // Draw line on limited area
  6.  
  7. void JVLine_DrawLimited(int x1,int y1,int x2,int y2,unsigned char color,int xl,int yl,int width,int height)
  8. {
  9.    int a,b;
  10.  
  11.    // Switch so that y1<y2
  12.  
  13.    if(y2<y1)
  14.    {
  15.       a=x1;
  16.       b=y1;
  17.       x1=x2;
  18.       y1=y2;
  19.       x2=a;
  20.       y2=b;
  21.    }
  22.  
  23.    // Limit upper border
  24.  
  25.    if(y2<yl)
  26.       return;
  27.    if(y1<yl)
  28.    {
  29.       // y1=yl
  30.  
  31.       x1=(int)(((long)x1*(long)(y2-yl)+(long)x2*(long)(yl-y1))/(long)(y2-y1));
  32.       y1=yl;
  33.    }
  34.  
  35.    // Limit lower border
  36.  
  37.    if(y1>=yl+height)
  38.       return;
  39.    if(y2>=yl+height)
  40.    {
  41.       // y2=yl+height-1
  42.  
  43.       x2=(int)(((long)x1*(long)(y2-yl-height+1)+(long)x2*(long)(yl+height-1-y1))/(long)(y2-y1));
  44.       y2=yl+height-1;
  45.    }
  46.  
  47.    // Switch so that x1<x2
  48.  
  49.    if(x1>x2)
  50.    {
  51.       a=x1;
  52.       b=y1;
  53.       x1=x2;
  54.       y1=y2;
  55.       x2=a;
  56.       y2=b;
  57.    }
  58.  
  59.    // Limit left border
  60.  
  61.    if(x2<xl)
  62.       return;
  63.    if(x1<xl)
  64.    {
  65.       // x1=xl
  66.  
  67.       y1=(int)(((long)y1*(long)(x2-xl)+(long)y2*(long)(xl-x1))/(long)(x2-x1));
  68.       x1=xl;
  69.    }
  70.  
  71.    // Limit right border
  72.  
  73.    if(x1>=xl+width)
  74.       return;
  75.    if(x2>=xl+width)
  76.    {
  77.       // x2=xl+width-1
  78.  
  79.       y2=(int)(((long)y1*(long)(x2-xl-width+1)+(long)y2*(long)(xl+width-1-x1))/(long)(x2-x1));
  80.       x2=xl+width-1;
  81.    }
  82.  
  83.    // Draw line
  84.  
  85.    JVLine_Draw(x1,y1,x2,y2,color);
  86. }
  87.  
  88.